// 执行命令  ts-node tupleType.ts
// 元组  限制数组元素的个数和类型
let x: [string, number]; 
// 类型必须匹配且个数必须为2

x = ['hello', 10]; // OK 
// x = ['hello', 10,10]; // Error 
// x = [10, 'hello']; // Error

// 元组解构赋值
let employee: [number, string] = [1, "Semlinker"];
let [id, username] = employee;

// 元组类型的可选元素
let optionalTuple: [string, boolean?];
optionalTuple = ["Semlinker", true];
optionalTuple = ["Kakuqo"];

// 元组类型的剩余元素
type RestTupleType = [number, ...string[]];
let restTuple: RestTupleType = [666, "Semlinker", "Kakuqo", "Lolo"];

// 只读的元组类型
let point: readonly [number, number] = [10, 20];
// point[0] = 1  // Error

// console.log('tuple type: ', x)